#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>




int main()
{
    close(1); 
    int n = printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->fd: %d\n", stdout->_fileno);
    printf("stderr->fd: %d\n", stderr->_fileno);
    fprintf(stderr, "%d\n", n);
    
    
    //char buffer[1024]; 
    //ssize_t s = read(0, buffer, sizeof(buffer));
    //if (s < 0) return 1;
    //buffer[s] = '\0';
    //printf("%s\n", buffer);

    //const char* msg = "hello linux\n";
    //fprintf(stdout, "%s", msg);
    //fprintf(stderr, "%s", msg);
    
            
    //umask(0);
    // fd -> file discriptor 文件描述符
    //int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    //int fd1 = open("log1.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fd2 = open("log2.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fd3 = open("log3.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //int fd4 = open("log4.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    //if (fd1 < 0)
    //{
    //    printf("open file erro\n");
    //    return 1;
    //}
    //printf("fd1:%d\n", fd1);
    //printf("fd2:%d\n", fd2);
    //printf("fd3:%d\n", fd3);
    //printf("fd4:%d\n", fd4);
    //const char* msg = "hello linux\n";
    //write(fd, msg, strlen(msg));

    return 0;
}


// flags 比特位方式的标志位传递方式
//#define ONE (1<<0) // 1
//#define TWO (1<<1) // 2
//#define THREE (1<<2) // 4
//#define FOUR (1<<3) // 8
//
//void show(int flags)
//{
//    if (flags & ONE) printf("function1\n");
//    if (flags & TWO) printf("function2\n");
//    if (flags & THREE) printf("function3\n");
//    if (flags & FOUR) printf("function4\n");
//}
//
//
//int main()
//{
//    show(ONE);
//    printf("----------------------\n");
//    show(TWO);
//    printf("----------------------\n");
//    show(THREE);
//    printf("----------------------\n");
//    show(FOUR);
//    printf("----------------------\n");
//    show(ONE|TWO);
//    printf("----------------------\n");
//    show(ONE|TWO|THREE);
//    printf("----------------------\n");
//
//    return 0;
//}


//int main()
//{
//    //chdir("../"); 
//    printf("pid: %d\n", getpid());
//    FILE* fp = fopen("log.txt", "a");
//    if (fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    const char* message = "hello linux\n";
//    // strlen(message)+1 ??? 字符串以\0结尾是C语言的规定，与文件没有关系
//    fwrite(message, strlen(message), 1, fp);
//    fclose(fp);
//
//
//    return 0;
//}
